Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

99장. 운영 체크리스트 — 보안 · 비용 · 관측성

이 장에서 말하고자 하는 것

지금까지 본 부품들을 운영에 올리기 직전 점검 목록이다.

세 가지 축으로 정리한다.

  • 보안
  • 비용
  • 관측성

각 항목은 책의 어느 장에서 다뤘는지도 함께 표시했다.


1. 보안 — 외부 노출

□ Route 53 ALIAS 로만 AWS 자원 가리키기                (30)
□ ACM 인증서: CloudFront는 us-east-1, ALB는 그 리전     (32)
□ 80 → 443 리다이렉트 켜져 있음                         (31)
□ CloudFront 앞단에 WAF (Managed Rules + Rate-based)    (40)
□ ALB 는 인터넷에 직접 노출되지 않음 (Private)           (52, 54)
□ S3 버킷 Public Access Block ON                       (56)
□ 공개 S3 자원은 CloudFront + OAC 로만                  (39)
□ HTTP 호출이 CloudFront 시크릿 헤더를 거쳐 ALB로       (39)

2. 보안 — 네트워크

□ Task는 프라이빗 서브넷                                (28, 51)
□ NAT Gateway + VPC Endpoint (S3·ECR·Logs·SSM·Secrets)  (88)
□ 보안 그룹: ALB ← 인터넷 443 / Task ← ALB / DB ← Task   (26, 47)
□ NACL은 기본 그대로 (SG가 주된 통제)                    (27)
□ Multi-AZ로 ALB · ECS · RDS 구성                       (24, 63)

3. 보안 — 권한 · 비밀

□ 루트 계정 MFA, 일상 사용 금지                          (78)
□ 사람 사용자에게 MFA 강제                              (78)
□ 머신은 항상 Role (User 키 사용 금지)                   (79)
□ ECS Execution Role / Task Role 분리                   (79)
□ 서비스마다 별도 Task Role                              (79, 80)
□ Task Role 권한: Action · Resource 모두 좁게            (80)
□ KMS Customer Managed Key 도입 + 자동 회전              (81)
□ S3 SSE-KMS + Bucket Keys                              (81)
□ 비밀은 Secrets Manager / Parameter Store (SecureString) (82)
□ Task Definition의 secrets 필드로 주입 (평문 환경 X)    (45, 82)
□ Git/로그에 비밀 안 들어가게                            (82, 84)
□ CI 인증은 OIDC (액세스 키 안 박음)                     (79, 94)

4. 보안 — 감사 · 탐지

□ CloudTrail Multi-Region · Log Validation · Object Lock (87)
□ 변경에 민감한 이벤트는 알람 (IAM 변경 · SG 변경 · 삭제) (87)
□ GuardDuty · Security Hub 활성화                       (87)
□ AWS Config 핵심 자원 추적                              (87)
□ WAF 로그 수집 + 알람                                   (40)

5. 비용 — 컴퓨트

□ Fargate 시작은 On-Demand, 안정 후 Spot 혼합            (46)
□ ECS Service Auto Scaling Target Tracking               (37)
□ Max를 너무 크게 잡지 않기 (비용 사고 방지)              (37)
□ ALB 한 대로 여러 서비스 (TG 분리)                       (33, 35)
□ Sticky Session은 꼭 필요할 때만                         (34, 37)

6. 비용 — 데이터

□ S3 수명 주기: Standard → IA → Glacier → 삭제           (57)
□ versioning + 옛 버전 수명 주기 함께                    (56, 57)
□ S3 SSE-KMS 는 Bucket Keys 켜기                         (81)
□ DynamoDB On-Demand 시작 → 안정 후 Provisioned + Auto   (68)
□ DynamoDB TTL 켜기 (세션·이벤트)                        (68)
□ RDS Multi-AZ는 켜되 dev는 끄기                          (63)
□ ECR 수명 주기 (오래된 이미지 정리)                      (43)
□ CloudWatch Logs retention 명시 (30~90일 표준)           (84)

7. 비용 — 네트워크

□ S3 · DynamoDB는 Gateway Endpoint로 NAT 우회             (88)
□ ECR · Logs · SSM · Secrets · KMS Interface Endpoint     (88)
□ CloudFront로 정적 트래픽 흡수                            (38, 59)
□ CloudFront Cache Hit Ratio 알람                          (38)
□ CloudFront WAF 호출 비용 점검                            (40)

8. 관측성 — 메트릭 · 알람

□ 서비스마다 대시보드: RequestCount · p95/p99 · 5xx · CPU (83)
□ DB: CPU · Connections · ReplicaLag · Throttle           (62~64, 68)
□ SQS: 메시지 깊이 · 오래된 메시지 · DLQ                  (74)
□ 알람 등급 분리 (Slack vs Page)                          (83)
□ 알람마다 Runbook 링크                                   (83)

9. 관측성 — 로그 · 트레이스

□ 모든 로그 JSON 한 줄                                    (84, 85)
□ 모든 로그에 trace_id · request_id · user_id            (86)
□ 비밀 · PII 마스킹 (로깅 라이브러리에서)                  (84)
□ FireLens 또는 awslogs (서비스 특성에 맞게)              (85)
□ 분산 트레이싱 (X-Ray 또는 OpenTelemetry ADOT)            (86)
□ ALB · CloudFront · WAF 액세스 로그 S3                    (84)

10. 복구 · DR

□ AWS Backup Plan 매일 (RDS·DynamoDB·EFS 등 통합)         (71)
□ RDS PITR 활성 (보관 7~30일)                              (62)
□ DynamoDB PITR 활성                                       (66)
□ Vault Lock 또는 별도 계정 백업 복제                      (71)
□ 정기 복구 시뮬레이션 (분기마다)                          (71)
□ 핵심 서비스 페일오버 시험                                (63)
□ Cross-Region 백업 (필요 시)                              (71)

11. CI/CD

□ 이미지 태그는 sha-{commit} · 불변                       (43, 94)
□ ECR 스캔 결과로 배포 차단 (CRITICAL)                     (43, 94)
□ CI 인증은 OIDC + IAM Role                                (94)
□ ECS Service deployment_circuit_breaker + rollback        (47)
□ 핵심 서비스는 Blue-Green (CodeDeploy)                    (49, 95, 96)
□ Terraform Plan 결과 PR 코멘트, 머지 시 Apply             (93, 95)
□ DB 스키마 변경은 3-Phase                                 (96)

12. 처음 환경 만들 때 — 추천 순서

1. AWS 계정 분리 (Organizations · prod/stage/dev)
2. Identity 베이스라인 (IAM 정책 · SCP · MFA · 루트 잠금)
3. CloudTrail · Config · GuardDuty 켜기
4. KMS 키 / Secrets Manager 도입
5. VPC + 서브넷 + Endpoint 만들기
6. ALB + ACM + Route 53
7. ECR · ECS Cluster + 첫 서비스
8. RDS / DynamoDB / ElastiCache
9. CloudFront + WAF + API Gateway
10. CI/CD (OIDC) + IaC (Terraform)
11. CloudWatch 대시보드 · 알람 · X-Ray
12. AWS Backup · 복구 시뮬레이션

13. SLO · SLI — 운영의 약속

운영을 더 단단히 하려면 측정 가능한 약속을 만든다.

SLI (지표)        SLO (목표)
응답 성공률      99.9% / 30일
p95 지연         500ms 이하
주문 처리 성공률 99.95%

알람과 배포 차단 모두 이 숫자 기반으로 설계한다.

“느낌” 으로 운영하지 않고 “약속한 숫자” 로 운영한다


14. 한 줄로 정리

운영은 한 번에 끝나지 않는다 — 분기마다 이 체크리스트를 다시 본다
보안 · 비용 · 관측성 세 축의 균형이 곧 운영 품질이다


15. 이 장의 핵심 정리

  1. 운영 점검은 보안 · 비용 · 관측성 세 축으로 본다.
  2. 각 항목은 책의 어느 장과 연결돼 있다 — 잊었다면 그 장으로 돌아간다.
  3. 처음 환경은 12단계로 차근차근 올린다.
  4. SLO 가 있어야 알람과 배포 차단이 “느낌” 이 아닌 약속이 된다.
  5. 체크리스트는 분기마다 재검토한다.
  6. 한 번도 안 일어난 시나리오는 일어난 적이 없는 게 아니라 아직 안 일어났을 뿐.